package com.tarena.lbs.basic.web.controller;

import com.tarena.lbs.base.protocol.exception.BusinessException;
import com.tarena.lbs.base.protocol.model.Result;
import com.tarena.lbs.basic.web.service.LoginService;
import com.tarena.lbs.pojo.passport.param.AdminLoginParam;
import com.tarena.lbs.pojo.passport.param.UserLoginParam;
import com.tarena.lbs.pojo.passport.vo.LoginVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 专门负责处理 全局登录接口的控制层
 */
@RestController//组合注解 包含@Controller和@ResponseBody
public class LoginController {
    //当前项目代码开发习惯
    /*
       不在创建业务接口 和仓储层接口 直接创建实现类
     */
    @Autowired
    private LoginService loginService;
    /**
     * 参考接口文件
     * 请求地址: /passport/admin/login
     * 请求方式: post
     * 请求参数: AdminLoginParam param
     * 返回值:  Result<LoginVO></LoginVO>
     */
    @PostMapping("/passport/admin/login")
    public Result<LoginVO> adminLogin(AdminLoginParam param) throws BusinessException {
        //在当前项目代码开发的习惯
        /*
          1. 业务层的入参 和控制层一致的
          2. 业务层出参 写操作(CUD) 考虑前端需要 void 读操作 和前端约定数据data要什么 业务就返回什么
         */
        LoginVO vo=loginService.adminLogin(param);
        return new Result<>(vo);
    }
    //小程序端登录
    @PostMapping("/passport/user/login")
    public Result<LoginVO> userLogin(UserLoginParam userLoginParam)
        throws BusinessException{
        LoginVO vo=loginService.userLogin(userLoginParam);
        return new Result<>(vo);
    }
}
